(function($){

    function SelectFile(config){
        var self = this;
        $.extend(this,config);
        return this.init(config);
    }

    SelectFile.prototype = {
        constructor: 'SelectFile',
        init : function(){
            this.$wrapper = $(this.container);
            this.bindEvent();
        	this.dragging = false;
            this.$num = this.$wrapper.find('.upload-num');
            this.$msg = this.$wrapper.find('.upload-msg');
        },
        bindEvent : function(){
        	var self = this;
            // this.$wrapper.get(0).ondragstart = this.dragStart.bind(this);
            // this.$wrapper.get(0).ondragenter = this.dragEnter.bind(this);
            // this.$wrapper.get(0).ondragleave = this.dragLeave.bind(this);
            // this.$wrapper.get(0).ondragover = this.dragOver.bind(this);
            this.$wrapper.get(0).ondrop = this.drop.bind(this);
            
            // $(document).get(0).ondragover = function(e){
        	// 	e.stopPropagation();
            	// e.preventDefault();
        	// }
        	// $(document).get(0).ondrop = function(e){
        	// 	e.stopPropagation();
            	// e.preventDefault();
        	// }
        	if(this.localUpload){
        		this.localUploadFn();
        	}
        },
        // dragStart : function(){
        //
        // },
        // /**
        //  * 拖拽进入
        //  */
        // dragEnter : function(e){
        //     this.$wrapper.addClass('enter');
        // },
        // /**
        //  * 拖拽离开
        //  */
        // dragLeave : function(e){
        //     this.$wrapper.removeClass('enter');
        // },
        // /**
        //  * 拖拽进入
        //  */
        // dragOver: function(e) {
        // 	e.stopPropagation();
        //     e.preventDefault();
        // },
        /**
         * 放下文件时
         */
        drop: function(e) {
        	var self = this;
        	self.files = e.files;
        	var dom = '',imgSrc=[],finish=false;
        	self.$wrapper.removeClass('enter');
        	self.upload(self.files);
            // $.each(self.files,function(i,file){
            //     imgSrc.push(self.createObjectURL(file));
            // });
            //
            // $.each(imgSrc,function(i,src){
            //     dom += self.tpl.replace(/{{imgSrc}}/ig,src);
            // })
            // self.$wrapper.append(dom);
            // if(this.callback){
            //     this.callback();
            // }
        },
        upload : function(files){ // 上传图片
            var self = this;
            var xhr = new XMLHttpRequest();

            var formData = new FormData();

            $.each(files,function(i,file){
                formData.append("files",file);
            });

            /* 事件监听 */
            xhr.upload.addEventListener("progress", uploadProgress, false);
            xhr.addEventListener("load", uploadComplete, false);
            xhr.addEventListener("error", uploadFailed, false);
            xhr.addEventListener("abort", uploadCanceled, false);
            /* 下面的url一定要改成你要发送文件的服务器url */
            xhr.open("POST", self.ajax.url);
            xhr.send(formData);


                // $.ajax({
                //     xhrFields: {
                //         withCredentials: true
                //     },
                //     url:  self.ajax.url,
                //     type: 'post',
                //     dataType: 'json',
                //     data: formData,
                //     cache: false,
                //     processData: false,
                //     contentType: false,
                //     beforeSend: function(){
                //
                //     },
                //     success: function(res){
                //         if (res.flag == "success"){
                //             if(res.data != ''){
                //                 Kit.alert_success('上传成功');
                //                 $('#imgShow').attr('src',res.data);
                //             }
                //         } else {
                //             Kit.alert2('文件上传失败');
                //         }
                //     },
                //     complete: function(){
                //         $("#file").replaceWith('<input type="file" id="file" name="upFile"/>');
                //     },
                //     error: function(){
                //         Kit.alert2('文件上传失败');
                //     }
                // });
            function uploadProgress(evt) {
                if (evt.lengthComputable) {
                    var percentComplete = Math.round(evt.loaded * 100 / evt.total);
                    document.getElementById('progressNumber').innerHTML = percentComplete.toString() + '%';
                }
                else {
                    document.getElementById('progressNumber').innerHTML = '无法计算';
                }
            }
            function uploadComplete(evt) {
                /* 当服务器响应后，这个事件就会被触发 */
                kit.alert2(evt.target.responseText);
            }

            function uploadFailed(evt) {
                kit.alert2("上传文件发生了错误尝试");
            }

            function uploadCanceled(evt) {
                kit.alert2("上传被用户取消或者浏览器断开连接");
            }

        },
        /**
         * 上传错误处理
         */
        error: function(e) {
            this.onerror && this.onerror(e);
            this.$wrapper.attr('data-state', 'error');
            this.showMsg(e.msg);
        },
        progress: function(e) {
            if (e.lengthComputable) {
                this.showNum(Math.floor(e.loaded / e.total * 100));
            }
            this.onprogress && this.onprogress(e);
        },
        /**
         * 显示进度数字信息
         */
        showNum: function(num) {
            this.$num.html(num);
        },
        /**
         * 显示提示信息
         */
        showMsg: function(msg) {
            this.$msg.html(msg);
        },
        /**
         * 生成url
         */
        createObjectURL: function(file) {　
            var url = null;
            if (window.webkitURL) {
                url = window.webkitURL.createObjectURL(file)
            } else if (window.URL) {
                url = window.URL.createObjectURL(file);
            }
            return url;
        },
        /**
         * 从本地选择图片
         */
        localUploadFn : function(){
       		var self = this;
        	var $localBtn = this.UploadBtn;
        	$localBtn.off('click').on('click',function(){
		       
		        var input = document.createElement('input');
		        input.type = 'file';
		        input.multiple = 'multiple';
		        input.onchange = function(e) {
		            e.files = this.files;
		            self.drop(e);
		            input.onchange = null;
		            input = null;
		        };
		        input.click();
		    });
        }
    };

    $.fn.selectfile = function(options) {
        var returnVal = this;
        //这里合并配置
        $.extend(true, $.fn.selectfile.defaults, options)
        this.each(function(key, the) {
            new SelectFile($.extend({ container: the }, $.fn.selectfile.defaults));
        })
        return returnVal;
    };

    $.fn.selectfile.defaults = {
        type: 'image',
        callback : '', //将内容填充进去之后的回调
        tpl:'<div class="pic-list-piece">\
				<img src="{{imgSrc}}" alt="">\
			</div>',
    	localUpload : false,
    	UploadBtn : '',
        name : 'file',
        text: {
            upload: {
                uploading: '正在上传',
                success: '添加成功',
                tips: '文件拖放到这里',
                linkword: '或者',
                descUploading: '上传中',
                descButton: '上传',
                agButton: '重新上传'
            },
            error: {
                type: '文件类型不正确',
                size: '文件大小超过限制',
                number: '文件数超过一个',
                none: '没有要上传的文件',
                allowSize: '宽高尺寸有问题'
            }
        }
    };
})(jQuery)